package com.breadenglish.cms.api.app.dao.impl;

import com.breadenglish.cms.api.app.domain.db.CodeKey;
import com.breadenglish.cms.api.app.dao.CodeDao;
import com.breadenglish.cms.api.app.domain.query.CodeQuery;
import com.breadenglish.cms.api.app.mapper.CodeMapper;
import com.breadenglish.cms.api.app.domain.db.Code;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;


/**
 * Code
 * <p>
 * User: guoyao
 * DateTime: 2015-12-22 20:06:38
 */
@Service("codeDao")
public class CodeDaoImpl implements CodeDao {

    @Resource
    private CodeMapper codeMapper;

    /**
     * 根据主键查询Code对象
     *
     * @param key
     * @return Code对象
     */
    @Override
    public CodeQuery selectByPrimaryKey(CodeKey key) {
        return codeMapper.selectByPrimaryKey(key);
    }

    /**
     * 根据查询条件查询符合条件的Code对象
     *
     * @param code
     * @return 符合条件的Code对象List
     */
    @Override
    public List<Code> select(Code code) {
        return codeMapper.select(code);
    }


    /**
     * 查询字典及字典分类信息
     * @param code 字典信息
     * @return 字典信息集合
     */
    @Override
    public List<CodeQuery> selectCodeAndClass(CodeQuery code){
        return codeMapper.selectCodeAndClass(code);
    }

    /**
     *  查询字典树
     * @param code 字典信息
     * @return  字典信息结合
     */
    public List<Code> queryCodeTree(Code code){
        return codeMapper.queryCodeTree(code);
    }

    /**
     * 根据主键删除Code对象
     *
     * @param key
     * @return 影响条件数
     */
    @Override
    public int deleteByPrimaryKey(CodeKey key) {
        return codeMapper.deleteByPrimaryKey(key);
    }

    /**
     * 根据条件删除符合条件的Code对象
     *
     * @param code
     * @return 影响条件数
     */
    @Override
    public int delete(Code code) {
        return codeMapper.delete(code);
    }

    /**
     * 插入Code对象
     *
     * @param code
     * @return 影响条件数
     */
    @Override
    public int insert(Code code) {
        return codeMapper.insert(code);
    }

    /**
     * 更新Code对象
     *
     * @param code
     * @return 影响条件数
     */
    @Override
    public int update(Code code) {
        return codeMapper.update(code);
    }


    /**
     * 验证字典唯一性
     * @param param
     * @return 统计结果
     */
    @Override
    public int uniqueCode(Map param){
        return codeMapper.uniqueCode(param);
    }
}
